// ------------------------------- 工具方法 -------------------------------
/** 获取URL */
function getUrl() {
  const href = window.location.href // https://fxc5.5qm5s.net/forum.php?mod=forumdisplay&fid=37&page=100
  const origin = window.location.origin // https://fxc5.5qm5s.net
  const pathname = window.location.pathname // /forum.php
  const search = window.location.search // ?mod=forumdisplay&fid=37&page=100
  const searches = Object.fromEntries(new URLSearchParams(window.location.search)) // {mod: 'forumdisplay', fid: '37', page: '100'}

  return { origin, pathname, search, searches }
}

function createElement(option) {
  const { type = 'div', text = '', css = '', cNames = [], attrs = [] } = option

  const el = document.createElement(type)
  el.innerText = text
  cNames.forEach((cName) => el.classList.add(cName))
  attrs.forEach((attr) => el.setAttribute(attr.name, attr.value))
  el.style.cssText = css
  return el
}

/** 封装本地存储方法 */
function getCache() {
  class Cache {
    /** 获取存储项 */
    getItem(key) {
      let item = localStorage.getItem(key)
      try {
        return JSON.parse(item)
      } catch (err) {
        return item
      }
    }

    /** 存储 */
    setItem(key, value) {
      // 如果是Set类型，则转换成数组
      if (value instanceof Set) value = Array.from(value)

      // 如果是其他类型，则转换成JSON字符串
      try {
        value = JSON.stringify(value)
      } catch (err) {
        console.log('stringify失败：', value)
      }
      return localStorage.setItem(key, value)
    }

    /** 追加存储项 */
    pushItem(key, value) {
      // 1. 获取存储项
      let items = this.getItem(key)

      // 2. 追加
      if (Array.isArray(items)) {
        // 数组类型
        items.push(value)
      } else if (typeof items === 'string') {
        // 字符串类型
        items += ',' + value
        // console.log('items: ', items)
      }

      // 3. 重新存储
      this.setItem(key, items)
    }

    /** 删除存储项数组或字符串中的某个元素或某个子串 */
    removeItem(key, value) {
      // 1. 获取存储项
      const items = this.getItem(key)

      // 2. 删除
      if (Array.isArray(items)) {
        // 数组类型
        items.splice(value, 1)
      } else if (typeof items === 'string') {
        // 字符串类型
        const arr = items.split(',')
        arr.splice(value, 1)
        items = arr.join(',')
      }

      // 3. 重新存储
      this.setItem(key, items)
    }
  }
  return new Cache()
}
